package com.bd.scm.dao.mapper.personDetails;

import com.alibaba.fastjson.JSONObject;
import com.bd.scm.domain.dto.personal.AnnualDto;
import com.bd.scm.domain.dto.personal.OffDutyDto;
import com.bd.scm.domain.dto.personal.PersonalMonthStatsDto;
import com.bd.scm.domain.dto.timeCard.TimeCardDto;
import com.bd.scm.domain.dto.workCalendar.WorkCalendarDataDto;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 个人信息Mapper
 *
 * @ClassName TimeCardMapper
 * @Description TODO
 * @Author YH
 * @Date 2019/12/21 0021 10:32
 * @Version 1.0
 **/
public interface PersonDetailsMapper {

    /**
     * 个人考勤数据  根据人员ID
     *
     * @param timeCardDto userSerial 登录人员ID
     * @return
     */
    List<JSONObject> findPersonTimecard(TimeCardDto timeCardDto);

    /**
     * 个人信息  加班记录
     *
     * @param timeCardDto userSerial 登录人员ID
     * @return
     */
    List<JSONObject> findPersonOvertime(TimeCardDto timeCardDto);

    /**
     * 个人信息  请假记录
     *
     * @param timeCardDto userSerial 登录人员ID
     * @return
     */
    List<JSONObject> findPersonLeave(TimeCardDto timeCardDto);

    /**
     * 年假视图
     *
     * @param timeCardDto userSerial 登录人员ID
     * @return
     */
    JSONObject findNjView(TimeCardDto timeCardDto);

    /**
     * 调休视图
     *
     * @param timeCardDto userSerial 登录人员ID
     * @return
     */
    JSONObject findTxView(TimeCardDto timeCardDto);

    /**
     * 查指定月份的个人排班、加班、请假等信息
     *
     * @param userId
     * @param year
     * @param month
     * @return
     */
    List<WorkCalendarDataDto> getScheduleByMonth(@Param(value = "userId") Long userId, @Param("year") int year, @Param("month") int month);

    /**
     * 个人月度考勤统计
     *
     * @param userId
     * @param queryDate
     * @return
     */
    PersonalMonthStatsDto getMonthStats(@Param("userId") Long userId, @Param("queryDate") String queryDate);

    /**
     * 个人中心-调休天数
     *
     * @param userId
     * @param date
     * @return
     */
    OffDutyDto getOffDuty(@Param("userId") Long userId, @Param("date") Date date);

    /**
     * 个人中心-年假天数
     *
     * @param userId
     * @return
     */
    AnnualDto getAnnual(@Param("userId") Long userId);
}
